C'est quoi Bootstrap ?
Bootstrap est un framework HTML/CSS/JS. Ce dernier fournit des outils déjà préparés pour concevoir rapidement des pages web (des boutons, fenêtre modales, tableaux, etc...).
Ce framework est un des projets les plus populaires sur Github. Il a été développé en 2010 par Twitter et est actuellement en version 5.0
Inclure Bootstrap sur son site
Pour inclure Bootstrap, soit on le fait en CDN (à distance), soit en téléchargeant les fichiers en local. Il y a 2 fichiers à inclure :
- bootstrap.min.css : partie CSS du framework
- bootstrap.bundle.min.js : partie JS du framework (la version bundle inclut aussi popper.js qui est une bibliothèque dont Bootstrap à besoin. Si vous ne mettez pas la version bundle, vous devrez aussi inclure cette bibliothèque manuellement.)
Exemple d'une inclusion depuis le CDN cdnjs.com :
<!DOCTYPE html>
<html lang="fr">
<head>
<!-- Le fichier CSS doit être inclut avant les autres fichiers CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.2/css/bootstrap.min.css">
<!-- ... -->
</head>
<body>
<!-- ... -->
<!-- Le fichier JS doit toujours être inclut avant la fermeture de la balise <body> -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.2/js/bootstrap.bundle.min.js"></script>
</body>
</html>
Attention : ne pas inclure de bibliothèque de reset CSS (comme normalize) en même temps que Bootstrap. C'est inutile car ce dernier remet déjà le CSS à plat.
Le système de grille Bootstrap
Ce qui a beaucoup participé à faire connaître Bootstrap, c'est son système de grille en 12 colonnes qui permet de facilement pouvoir agencer une page web. Quand on crée un bloc, sa taille est définit via un nombre de colonne sur un total de 12 (6 colonnes = 50% du parent par exemple.)
<!-- Le conteneur générique de bootstrap (ne peut avoir que des éléments ayant la classe .row en enfants directs !) -->
<div class="container">
<!-- Crée une ligne d'éléments sur 12 colonnes (ne peut avoir que des éléments ayant une classe col-x en enfants directs !) -->
<div class="row">
<!-- Ce bloc fera une taille de 50% (col-6) de son parent, avec une marge intérieur de 3 (p-3) -->
<div class="col-6 p-3">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Culpa eaque eveniet exercitationem incidunt iure libero magnam obcaecati quasi, quibusdam, recusandae reprehenderit sequi sint vel voluptas voluptatibus. Beatae magni odio officia optio perspiciatis! Adipisci aliquam aspernatur aut, commodi cum enim et incidunt officia, quasi quibusdam quo totam, voluptate voluptatum? Itaque, praesentium.</div>
<!-- Ce bloc fera une taille de 25% (col-3) de son parent, avec une marge intérieur de 3 (p-3) -->
<div class="col-3 p-3">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolore et ex rerum! Consectetur dolores ducimus modi, quam quo saepe veniam? Cupiditate inventore maxime vero voluptatibus.</div>
<!-- Ce bloc fera une taille de 25% (col-3) de son parent, avec une marge intérieur de 3 (p-3) -->
<div class="col-3 p-3">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolore et ex rerum! Consectetur dolores ducimus modi, quam quo saepe veniam? Cupiditate inventore maxime vero voluptatibus.</div>
</div>
</div>
Résultat de ce code :
La grille responsive
Encore plus poussé, il est possible de définir la taille des éléments en nombre de colonnes ET en fonction de la taille de l'écran !
<!-- Variante de container (sans marges vides sur les côtés) -->
<div class="container-fluid">
<div class="row">
<!-- Voir explication, en dessous -->
<div class="col-12 col-sm-8 offset-sm-2 col-xl-6 offset-xl-3">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi consequatur dignissimos dolor dolorum eveniet facilis, ipsam itaque laboriosam, magni minima nam necessitatibus non obcaecati quidem saepe, soluta temporibus tenetur vero? A assumenda delectus dignissimos ea eaque eligendi eos esse facilis fugiat harum inventore ipsam iste libero maiores, minus modi natus nobis non, optio perspiciatis provident quibusdam quis quisquam quo ratione rem repellat similique sit suscipit temporibus totam ut veritatis voluptatem! Ab atque consequatur dolore doloribus eius eos error eveniet fugiat hic, itaque iusto libero natus nisi non placeat quasi qui quia reiciendis rerum saepe sint vero voluptates! Placeat, quisquam velit?</div>
</div>
</div>
Dans l'exemple ci-dessus, le bloc est définit en 3 tailles différentes en fonction de 3 scénarios possibles :
- col-12 : signifie que si l'écran fait entre 0px et l'infinie, le bloc fera 12 colonnes de large (100% de son parent)
- col-sm-8 : signifie que si l'écran fait entre 576px et l'infinie, le bloc fera 8 colonnes de large (66% de son parent)
- col-xl-8 : signifie que si l'écran fait entre 1200px et l'infinie, le bloc fera 8 colonnes de large (66% de son parent)
Les offsets sont des décalages en nombre de blocs vers la droite :
- offset-sm-2 : signifie que si l'écran fait entre 576px et l'infinie, le bloc se décalera de 2 colonnes vers la droite
- offset-xl-3 : signifie que si l'écran fait entre 1200px et l'infinie, le bloc se décalera de 3 colonnes vers la droite
Doc sur les 12 colonnes : https://getbootstrap.com/docs/5.0/layout/columns/
Les breakpoints Bootstrap
Il existe 6 breakpoints dans Bootstrap qui s'activeront si la largeur de la fenêtre est comprise entre :
- 0px à l'infinie : sans nom (col-12 et offset-2 par exemple)
- 576px à l'infinie : sm (col-sm-12 et offset-sm-2 par exemple)
- 768px à l'infinie : md (col-md-12 et offset-md-2 par exemple)
- 992px à l'infinie : lg (col-lg-12 et offset-lg-2 par exemple)
- 1200px à l'infinie : xl (col-xl-12 et offset-xl-2 par exemple)
- 1400px à l'infinie : xxl (col-xxl-12 et offset-xxl-2 par exemple)
Si vous avez bien regardé, les intervalles de pixels se superposent. La règle est simple, le breakpoints le plus élevé prend le dessus sur les plus petit si l'écran est plus large que lui!
Ainsi si par exemple un bloc possède la classe col-8 et la classe col-xl-6, si l'écran fait 500 pixels, l'élément fera bien 8 colonnes. par contre si l'écran fait 1920 pixels de larges, dans ce cas le bloc fera 6 colonnes de large.
Doc sur les breakpoints : https://getbootstrap.com/docs/5.0/layout/breakpoints/
Utiliser les outils Bootstrap
Bootstrap possède beaucoup d'outils intégrés très pratiques, et ils sont tous référencés avec des exemples et avec le code de ces exemples sur la documentation officielle ici :https://getbootstrap.com/docs/5.0/getting-started/introduction/
Liste non exhaustive d'outils pratiques :
- Les alertes : https://getbootstrap.com/docs/5.0/components/alerts/
- Les navbars : https://getbootstrap.com/docs/5.0/components/navbar/
- Les tableaux : https://getbootstrap.com/docs/5.0/content/tables/
- Les fenêtres modales : https://getbootstrap.com/docs/5.0/components/modal/
- Les formulaires : https://getbootstrap.com/docs/5.0/forms/overview/
- La typographie : https://getbootstrap.com/docs/5.0/content/typography/
- Les images : https://getbootstrap.com/docs/5.0/content/images/
- Les accordéons : https://getbootstrap.com/docs/5.0/components/accordion/
- Les boutons : https://getbootstrap.com/docs/5.0/components/buttons/
- Les cards : https://getbootstrap.com/docs/5.0/components/card/
- Les carrousels : https://getbootstrap.com/docs/5.0/components/carousel/
- Les listes : https://getbootstrap.com/docs/5.0/components/list-group/
- Les paginations : https://getbootstrap.com/docs/5.0/components/pagination/
- Les popovers : https://getbootstrap.com/docs/5.0/components/popovers/
- Les icônes de chargement : https://getbootstrap.com/docs/5.0/components/spinners/
- Les textes colorés : https://getbootstrap.com/docs/5.0/utilities/colors/
- Les fonds colorés : https://getbootstrap.com/docs/5.0/utilities/background/
- Les bordures : https://getbootstrap.com/docs/5.0/utilities/borders/
- Les alignements de textes : https://getbootstrap.com/docs/5.0/utilities/text/